package entities.xml;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;

import entities.Cotizacion;
import entities.ItemCotizacion;

@SuppressWarnings("serial")
@XStreamAlias("Cotizacion")
public class CotizacionXML implements Serializable, ExchangeFormatEntity{
	
	private final static String ALIAS = "Cotizacion";
	
	@XStreamAlias("fechaemision")
	private long  fechaemision;
	@XStreamAlias ("vigencia")
	private Integer vigencia;
	@XStreamAlias("listaItemCotizacion")
	private List<ItemCotizacionXML> listaItemCotizacion;
	public CotizacionXML() {
		this.listaItemCotizacion = new ArrayList<ItemCotizacionXML>();
	}
	public CotizacionXML(long fechaemision, Integer vigencia,
			List<ItemCotizacionXML> items) {
		super();
		this.fechaemision = fechaemision;
		this.vigencia = vigencia;
		this.listaItemCotizacion = items;
	}
	
	public long  getFechaemision() {
		return fechaemision;
	}
	public void setFechaemision(long fechaemision) {
		this.fechaemision = fechaemision;
	}
	public Integer getVigencia() {
		return vigencia;
	}
	public void setVigencia(Integer vigencia) {
		this.vigencia = vigencia;
	}
	public List<ItemCotizacionXML> getlistaItemCotizacion() {
		return listaItemCotizacion;
	}
	public void setlistaItemCotizacion(List<ItemCotizacionXML> items) {
		this.listaItemCotizacion = items;
	}
	
	public static String getAlias() {
		return ALIAS;
	}
	@Override
	public Cotizacion toModelEntity() {
		Cotizacion cotizacion = new Cotizacion();
		cotizacion.setFechaEmision(new Date(this.getFechaemision()));
		cotizacion.setVigencia(this.getVigencia());
		List<ItemCotizacionXML> itemsCotizacionXML = this.getlistaItemCotizacion();
		for(ItemCotizacionXML itemCotizacionXML : itemsCotizacionXML){
			ItemCotizacion itemCotizacion = itemCotizacionXML.toModelEntity();
			cotizacion.getListaItemCotizacion().add(itemCotizacion);
		}
		return cotizacion;
	}
	@Override
	public void fromModelEntity(Object obj) {
		Cotizacion cotizacion = (Cotizacion) obj;
		this.setFechaemision(cotizacion.getFechaEmision().getTime());
		this.setVigencia(cotizacion.getVigencia());
		
		List<ItemCotizacion> itemsCotizacion = cotizacion.getListaItemCotizacion();
		List<ItemCotizacionXML> itemsCotizacionXML = new ArrayList<ItemCotizacionXML>();
		for(ItemCotizacion itemCotizacion : itemsCotizacion){
			ItemCotizacionXML itemCotizacionXML = new ItemCotizacionXML(itemCotizacion);
			itemsCotizacionXML.add(itemCotizacionXML);
		}
		this.setlistaItemCotizacion(itemsCotizacionXML);
		
	}
}
